package commons.data;

import commons.utils.primitive_geom.Rect_d;
import java.util.ArrayList;


// Représente l'ensemble des données, soit pour la généralisation Ligne/Site,
//  soit pour la représentation des annotations
public interface I_Data {

	// Ensemble des types de données récupérables via leur nom dans le I_Data
	public enum DataType {
		PATH_DER_LS, PATH_REF_LS, JUNCTION_DER_LS, JUNCTION_REF_LS, NODE_REF_LS, NODE_DER_LS, SEGMENT_DER_LS, SEGMENT_REF_LS, SEGMENT_SOURCE_LS, SEGMENT_NON_GENERALISE_LS, NODE_NON_GENERALISE_LS,
		SITE_A, ANNO_A, SEGMENT_OPTIM_A, SEGMENT_NOOPTIM_A,
		ZONE
	};

	public Rect_d getRectEmprise();

	// Appelé surtout par les couches pour le dessin
	// Renvoie les données d'un certain type, a minima tous ceux à l'intérieur d'un rectangle fourni
	// Si le rect est null, doit renvoyer toutes les données
	public ArrayList getData (DataType dataType, Rect_d rectVisu);
}
